package com.jklan.zhiqibackend.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * 密码工具类 - 使用BCrypt加密
 */
public class PasswordUtil {

    private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();

    /**
     * 生成随机盐值并加密密码
     * BCrypt会自动生成盐值并包含在哈希结果中
     */
    public static String encryptPassword(String password) {
        return encoder.encode(password);
    }

    /**
     * 验证密码
     * @param rawPassword 原始密码
     * @param encodedPassword 加密后的密码（包含盐值）
     * @return 验证结果
     */
    public static boolean verifyPassword(String rawPassword, String encodedPassword) {
        return encoder.matches(rawPassword, encodedPassword);
    }

    /**
     * 生成随机盐值（已弃用，BCrypt自动处理盐值）
     * 保留此方法是为了向后兼容
     * @deprecated BCrypt会自动生成和管理盐值
     */
    @Deprecated
    public static String generateSalt() {
        // BCrypt会自动生成盐值，这个方法已不再需要
        return encoder.encode("dummy").substring(0, 29); // 返回部分盐值格式
    }
}
